package config

import (
	"github.com/BurntSushi/toml"
	"fmt"
)

func init() {
	if Config != nil {
		return
	}
	_,err := toml.DecodeFile("./conf/config.toml",&Config)
	if err != nil {
		panic(err)
	}
	fmt.Println("配置加载完成",Config)
}

var Config *config

type config struct {
	Base Base `json:"base"`
	Api Api `json:"api"`
	Dbm []DB `json:"dbm"`
	Dbs []DB `json:"dbs"`
	Aldy Aldy `json:"aldy"`
	Redis Redis `json:"redis"`
	Cos Cos `json:"cos"`
	Oss Oss `json:"oss"`
	Smtp Smtp `json:"smtp"`
	Jpush Jpush `json:"jpush"`
	Dpush Dpush `json:"dpush"`
	WxApp WxApp `json:"wxApp"`
	WxMine WxMine `json:"wxMine"`
	WxMp WxMp `json:"wxMp"`
}

type Base struct {
	Name string `json:"name"`
	Debug bool `json:"debug"`
	Env string `json:"env"`
}

type Api struct {
	Ip string `json:"ip"`
	Port string `json:"port"`
}

type DB struct {
	Host string `json:"host"`
	Port string `json:"port"`
	User string `json:"user"`
	Psd string `json:"psd"`
	Name string `json:"name"`
	TimeZone string `json:"timeZone"`
	MaxConnNum int `json:"maxConnNum"`
	MaxOpenNum int `json:"maxOpenNum"`
	Prefix string `json:"prefix"`
}

type Aldy struct {
	AccessKeyId string `json:"accessKeyId"`
	AccessKeySecret string `json:"accessKeySecret"`
	DefaultVerify string `json:"defaultVerify"`
}

type Redis struct {
	Host string `json:"host"`
	Psd string `json:"psd"`
	Maxidle int `json:"maxidle"`
	MaxActive int `json:"maxActive"`
	KeyPrefix string `json:"keyPrefix"`
	Db int `json:"db"`
}

type Cos struct {
	SecretId string `json:"secretId"`
	SecretKey string `json:"secretKey"`
	Url string `json:"url"`
}

type Smtp struct {
	Email string `json:"email"`
	Psd string `json:"psd"`
	Host string `json:"host"`
	Port string `json:"port"`
	Name string `json:"name"`
}

type Jpush struct {
	AppKey string `json:"appKey"`
	AppSecret string `json:"appSecret"`
	Env bool `json:"env"`
}

type Oss struct {
	Endpoint string `json:"endpoint"`
	AccessKeyId string `json:"accessKeyId"`
	AccessKeySecret string `json:"accessKeySecret"`
	Bucket string `json:"bucket"`
	Url string `json:"url"`
}

type WxApp struct {
	AppId string `json:"appId"`
	AppSecret string `json:"appSecret"`
}

type WxMine struct {
	AppId string `json:"appId"`
	AppSecret string `json:"appSecret"`
}

type WxMp struct {
	AppId string `json:"appId"`
	AppSecret string `json:"appSecret"`
}

type Dpush struct {
	ErrorRobot string `json:"errorRobot"`
	ContactRebot string `json:"contactRebot"`
}
